﻿//using OfficeOpenXml;
//using System;
//using System.Drawing;
//using System.Drawing.Text;
//using System.IO;

//namespace Excel.EPPlus
//{
//    public class ExcelAddpicture
//    {

//        /// <summary>
//        ///     插入图片
//        /// </summary>
//        /// <param name="worksheet"></param>
//        /// <param name="stream"></param>
//        /// <param name="rowNum"></param>
//        /// <param name="columnNum"></param>
//        /// <param name="autoFit"></param>
//        public static void InsertImage(ExcelWorksheet worksheet, string filePath, int rowNum, int columnNum, bool autoFit)
//        {


//            var image = Image.FromFile(filePath);
//            var picture = worksheet.Drawings.AddPicture($"image_{DateTime.Now.Ticks}", filePath);
//            var cell = worksheet.Cells[rowNum, columnNum];
//            var cellColumnWidthInPix = GetWidthInPixels(cell);
//            var cellRowHeightInPix = GetHeightInPixels(cell);

//            var adjustImageWidthInPix = cellColumnWidthInPix;
//            var adjustImageHeightInPix = cellRowHeightInPix;

//            if (autoFit)
//            {
//                //图片尺寸适应单元格
//                var adjustImageSize = GetAdjustImageSize(image, cellColumnWidthInPix, cellRowHeightInPix);
//                adjustImageWidthInPix = adjustImageSize.Item1;
//                adjustImageHeightInPix = adjustImageSize.Item2;
//            }

//            //设置为居中显示
//            var columnOffsetPixels = (int)((cellColumnWidthInPix - adjustImageWidthInPix) / 2.0);
//            var rowOffsetPixels = (int)((cellRowHeightInPix - adjustImageHeightInPix) / 2.0);
//            picture.SetSize(adjustImageWidthInPix, adjustImageHeightInPix);

//            //epplus 的行列索引从0开始计数
//            picture.SetPosition(rowNum - 1, rowOffsetPixels, columnNum - 1, columnOffsetPixels);

//        }

//        /// <summary>
//        ///     获取自适应调整后的图片尺寸
//        /// </summary>
//        /// <param name="image"></param>
//        /// <param name="cellColumnWidthInPix"></param>
//        /// <param name="cellRowHeightInPix"></param>
//        /// <returns>item1:调整后的图片宽度; item2:调整后的图片高度</returns>
//        private static Tuple<int, int> GetAdjustImageSize(Image image, int cellColumnWidthInPix, int cellRowHeightInPix)
//        {
//            var imageWidthInPix = image.Width;
//            var imageHeightInPix = image.Height;
//            //调整图片尺寸,适应单元格
//            int adjustImageWidthInPix;
//            int adjustImageHeightInPix;
//            if (cellColumnWidthInPix * imageHeightInPix > imageWidthInPix * cellRowHeightInPix)
//            {
//                //图片高度固定,宽度自适应
//                adjustImageHeightInPix = cellRowHeightInPix;
//                var ratio = 1.0 * adjustImageHeightInPix / imageHeightInPix;
//                adjustImageWidthInPix = (int)(imageWidthInPix * ratio);
//            }
//            else
//            {
//                //图片宽度固定,高度自适应
//                adjustImageWidthInPix = cellColumnWidthInPix;
//                var ratio = 1.0 * adjustImageWidthInPix / imageWidthInPix;
//                adjustImageHeightInPix = (int)(imageHeightInPix * ratio);
//            }

//            return new Tuple<int, int>(adjustImageWidthInPix, adjustImageHeightInPix);
//        }

//        /// <summary>
//        ///     获取单元格的宽度(像素)
//        /// </summary>
//        /// <param name="cell"></param>
//        /// <returns></returns>
//        private static int GetWidthInPixels(ExcelRange cell)
//        {
//            var columnWidth = cell.Worksheet.Column(cell.Start.Column).Width;
//            var font = new Font(cell.Style.Font.Name, cell.Style.Font.Size, FontStyle.Regular);
//            var pxBaseline = Math.Round(MeasureString("1234567890", font) / 10);
//            return (int)(columnWidth * pxBaseline);
//        }

//        /// <summary>
//        ///     获取单元格的高度(像素)
//        /// </summary>
//        /// <param name="cell"></param>
//        /// <returns></returns>
//        private static int GetHeightInPixels(ExcelRange cell)
//        {
//            var rowHeight = cell.Worksheet.Row(cell.Start.Row).Height;
//            using (var graphics = Graphics.FromHwnd(nint.Zero))
//            {
//                var dpiY = graphics.DpiY;
//                // return (int)(rowHeight * (1.0 / deviceDefaultDpi) * dpiY);
//                return (int)(rowHeight * (1.0 / 1) * dpiY);
//            }
//        }

//        /// <summary>
//        ///     MeasureString
//        /// </summary>
//        /// <param name="s"></param>
//        /// <param name="font"></param>
//        /// <returns></returns>
//        private static float MeasureString(string s, Font font)
//        {
//            using (var g = Graphics.FromHwnd(nint.Zero))
//            {
//                g.TextRenderingHint = TextRenderingHint.AntiAlias;
//                return g.MeasureString(s, font, int.MaxValue, StringFormat.GenericTypographic).Width;
//            }
//        }





//    }





//}
